
#ifndef DESIGN_PATTERNS_ITERATOR_COLLECTION_HPP_
#define DESIGN_PATTERNS_ITERATOR_COLLECTION_HPP_

#include "iterator.hpp"

template<typename Ele>
class Collection
{
public:
  virtual void Add(const Ele& e) = 0;

  virtual void Remove(const Ele& e) = 0;

  virtual Iterator<Ele>* GetIterator() = 0;

  virtual ~Collection() = default;
};

#endif //DESIGN_PATTERNS_ITERATOR_COLLECTION_HPP_
